< c6de280b-af43-423e-9e15-2cc6​​2acbd80f

プレースホルダーを使用した画像のフェードイン

デフォルトで画像を表示する場合Imageウィジェット、 ロードされると単に画面に表示されることに気づくかもしれません。 これはユーザーにとって視覚的に不快に感じるかもしれません。

代わりに、最初にプレースホルダーを表示するのは良いことではないでしょうか。 画像は読み込まれるにつれてフェードインしますか?使用FadeInImageまさにこの目的のためのウィジェットです。

FadeInImageメモリ内、ローカルアセットなど、あらゆるタイプの画像を処理します。 またはインターネットからの画像。

インメモリ

この例では、transparent_imageシンプルな透明なプレースホルダーのパッケージ。

FadeInImage.memoryNetwork(
  placeholder: kTransparentImage,
  image: 'https://picsum.photos/250?image=9',
),

完全な例

import 'package:flutter/material.dart';
import 'package:transparent_image/transparent_image.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    const title = 'Fade in images';

    return MaterialApp(
      title: title,
      home: Scaffold(
        appBar: AppBar(
          title: const Text(title),
        ),
        body: Stack(
          children: <Widget>[
            const Center(child: CircularProgressIndicator()),
            Center(
              child: FadeInImage.memoryNetwork(
                placeholder: kTransparentImage,
                image: 'https://picsum.photos/250?image=9',
              ),
            ),
          ],
        ),
      ),
    );
  }
}

Fading In Image Demo

アセットバンドルから

プレースホルダーとしてローカル アセットを使用することも検討できます。 まず、アセットをプロジェクトのpubspec.yamlファイル (詳細については、を参照してください)アセットと画像の追加):

 flutter:
   assets:
+    - assets/loading.gif

次に、FadeInImage.assetNetwork()コンストラクタ:

FadeInImage.assetNetwork(
  placeholder: 'assets/loading.gif',
  image: 'https://picsum.photos/250?image=9',
),

完全な例

import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    const title = 'Fade in images';

    return MaterialApp(
      title: title,
      home: Scaffold(
        appBar: AppBar(
          title: const Text(title),
        ),
        body: Center(
          child: FadeInImage.assetNetwork(
            placeholder: 'assets/loading.gif',
            image: 'https://picsum.photos/250?image=9',
          ),
        ),
      ),
    );
  }
}

Asset fade-in